package com.demo.java.OD401_450.OD410;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【回收银饰，剩余银饰的重量(C&D卷)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146253741
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();  // 读取块的数量
        ArrayList<Integer> nums = new ArrayList<>();

        // 读取每块的重量
        for (int i = 0; i < n; i++) {
            nums.add(scanner.nextInt());
        }

        // 当剩余的块数大于等于3时进行处理
        while (nums.size() >= 3) {
            // 排序，确保每次取出最大和次大的块
            Collections.sort(nums);
            // 取出三块
            int z = nums.get(nums.size() - 1);  // 最大值
            nums.remove(nums.size() - 1);  // 移除最大块
            int y = nums.get(nums.size() - 1);  // 次大值
            nums.remove(nums.size() - 1);  // 移除次大块
            int x = nums.get(nums.size() - 1);  // 最小值
            nums.remove(nums.size() - 1);  // 移除最小块

            // 根据不同的情况调整块的重量
            if (x == y && y == z) {
                // 所有三块相等，不做任何处理
                continue;
            } else {
                int rest;
                if (x == y && y < z) {
                    // 情况2：x==y，z较大，计算rest
                    rest = z - y;
                } else if (x < y && y == z) {
                    // 情况3：y==z，x较小，计算rest
                    rest = y - x;
                } else {
                    // 情况4：三块不同，计算它们的差值
                    rest = Math.abs((z - y) - (y - x));
                }
                // 将新的块的重量加入列表
                nums.add(rest);
            }
        }

        // 如果没有剩余的块，输出0
        if (nums.isEmpty()) {
            System.out.println(0);
        } else {
            // 否则输出最大的块重量
            Collections.sort(nums);
            System.out.println(nums.get(nums.size() - 1));
        }
    }
}
